package cn.yitun.chat.yitunserverimbase.dao.system;

import cn.yitun.chat.yitunservercommonlib.crud.yitun.CrudDao;
import cn.yitun.chat.yitunservercommonlib.dataentity.dto.system.MenuDto;
import cn.yitun.chat.yitunservercommonlib.dataentity.po.system.MenuInfo;
import cn.yitun.chat.yitunservercommonlib.dataentity.vo.system.MenuVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 系统菜单表
 * @author chenyitun
 * @email chenyitun@163.com
 * @date 2020-05-27 14:43:51
 */
@Mapper
public interface MenuDao extends CrudDao<MenuDto, MenuInfo, MenuVo> {

	int absDel(Long id);

	int batchAbsDel(Long[] ids);

	/**
	 * 获取群组中最大子类序号
	 * @param superId
	 * @return
	 */
	int getMaxRankBySuperId(@Param("parentId") Long superId);

	/**
	 * 更新父id
	 * @param id
	 * @param superId
	 * @return
	 */
	int updateSuperId(@Param("id") Long id,@Param("parentId") Long superId);

	/**
	 * 更新排序
	 * @param id
	 * @param rank
	 * @return
	 */
	int updateRank(@Param("id") Long id,@Param("orderNum") int rank);

	/**
	 * 获取用户菜单
	 * @param userId
	 * @return
	 */
	List<MenuVo> getMenuListByUserId(@Param("userId") Long userId);

	/**
	 * 通过urlPath获取菜单
	 * @param url
	 * @return
	 */
	MenuInfo getByUrlPath(@Param("urlPath") String url);

	/**
	 * 角色权限
	 * @param roleId
	 * @return
	 */
    List<MenuVo> roleMenuLis(@Param("roleId") Long roleId);

	/**
	 * 更新菜单是否可见
	 * @param id
	 * @param visible
	 */
    int updateVisible(@Param("id") Long id, @Param("visible") Boolean visible);

	/**
	 * 更新图标
	 * @param id
	 * @param icon
	 * @return
	 */
	int updateIcon(@Param("id") Long id, @Param("icon") String icon);

	/**
	 * 用户的路由
	 * @param userId
	 * @return
	 */
	List<MenuVo> listMenuByUserIdAndCompanyId(@Param("userId") Long userId);

	/**
	 * 检查菜单名称是否唯一
	 * @param name
	 * @param parentId
	 * @return
	 */
	MenuInfo checkMenuNameUnique(@Param("name") String name,@Param("parentId") Long parentId);

	/**
	 * 用户权限
	 * @param userId
	 * @return
	 */
    List<String> listUserPerms(@Param("userId") Long userId);
}
